package com.practice.tree;

import com.practice.util.BinaryTreeNode;

public class ValidateBST {
	public boolean isBST(BinaryTreeNode root) {
		return isBST(root, Integer.MIN_VALUE, Integer.MAX_VALUE);
	}
	
	private boolean isBST(BinaryTreeNode parent, int lower, int upper) {
		if (parent == null) return true;
		if (parent.value() < lower || parent.value() > upper) return false;
		return isBST(parent.left(), lower, parent.value()) &&
				isBST(parent.right(), parent.value(), upper);
	}
	
//	public boolean isBST2(BinaryTreeNode root) {
//		return inorder(root, Integer.MIN_VALUE);
//	}
}
